- Introducción
- Planteamiento del problema
- Estado del arte
- Hipótesis
- Objetivos
- Contribución y aplicaciones
- Metodología
- Resultados
- Conclusiones y trabajo futuro
3 de febrero del 2023
“Learning dexterous in-hand manipulation” de OpenAI requirió de lo siguiente:
| Simulador | Física | Fotorrealista | DR | ROS | GPU | Multi-GPU |
|---|---|---|---|---|---|---|
| Gazebo | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ |
| Pybullet | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| MuJoCo | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Unity | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ |
| IsaacSim | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Simulador | Poder de cómputo (CPU + GPUs) |
Tiempo (HRS) |
Costo (USD) |
|---|---|---|---|
| MuJoCo | 6144 nucleos de CPU + 8 GPUs Nvidea V100 | 40 | 7,4188.88 |
| Isaac Gym | 320 nucleos de CPU + 1 GPU Nvidea A100 | 2 | 4.73 |
Makoviychuk, Viktor, et al. “Isaac gym: High performance gpu-based physics simulation for robot learning.” (2021).
“Es posible generar una política de control optimizada para la solución de una tarea de seguimiento de trayectorias sobre superficies tridimensionales usando un robot manipulador, mediante un ambiente de simulación física realista que provea las observaciones necesarias para el entrenamiento, empleando una combinación de técnicas de control tradicionales y algoritmos de DRL de forma eficiente, reduciendo el número de interacciones del agente y los recursos computacionales durante el entrenamiento”
\[ \mathbf{C}(u) = \sum_{i=0}^{i<n} N_{i,p}(u) \mathbf{P}_{i} \]
\[ \begin{split} N_{i, p}(u) = \frac{u-u_{i}}{u_{i+p}-u_{i}} N_{i,p-1}(u) + \cdots \\ \frac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}} N_{i+1, p-1}(u) \end{split} \]
\[ N_{i, 0}(u)=\left\{\begin{array}{cc} 1 & \text { si } u_{i} \leq u<u_{i+1} \\ 0 & \text { si no } \end{array}\right. \]
\[ \begin{align*} \textbf{p}_{uv} &= -\begin{bmatrix} 2 \pi s + \pi \\ \pi t + \frac{\pi}{2} \end{bmatrix} \\\\ \textbf{p}_{xyz} &= r \begin{bmatrix} \cos{(v)} \cos{(u)} \\ \cos{(v)} \sin{(u)} \\ \sin{(v)} \end{bmatrix} \\\\ \textbf{n} &= \begin{bmatrix} \sin{(u)} \cos{(v)} \\ \sin{(v)} \sin{(u)} \\ \cos{(u)} \end{bmatrix} \end{align*} \]
\[ \tau = \textbf{J}_{ee}^{T}(\textbf{q}) \textbf{M}_{\textbf{x}_{ee}}(\textbf{q}) [k_{p}(\delta_x) + k_v(\delta_{\dot{x}})] + \textbf{g}(\textbf{q}) \]
\[ \begin{align*} \text{Distancia} \rightarrow R_{d} &= -{\lVert \textbf{x}_{ee} - \textbf{x}_d \lVert}_2 \\\\ \text{Orientación} \rightarrow R_{o} &= -{\lVert \mathcal{H}(\textbf{q}_d, \textbf{q}^{*}_{ee}) \lVert}_2 \\\\ \text{Regularización} \rightarrow R_{c} &= -{\lVert \textbf{a} \lVert}^{2}_2 \\\\ \text{Recompensa final} \rightarrow R &= \alpha R_d + \beta R_o + \gamma R_c \end{align*} \]
PPO-Clip actualiza la política con: \[ \theta_{k+1} = \underset{\theta}{\mathrm{arg \space max}} \space \mathrm{E} \space \left[ L(s, a, \theta_k, \theta) \right] \]
Función objetivo: \[ L(s, a, \theta_k, \theta) = \min{\left( \frac{\pi_{\theta}(a|s)}{\pi_{\theta_{k}}(a|s)} A^{\pi_{\theta_{k}}}(s,a), \space\space g(\epsilon, A^{\pi_{\theta_{k}}}(s,a)) \right)} \]
Donde: \[ g(\epsilon, A) = \left\{\begin{array}{cc} (1 + \epsilon)A & \text { si } A \geq 0 \\ (1 - \epsilon)A & \text { si } A < 0 \end{array}\right. \]